bitkeeper revision 1.1159.81.1 (4151ba42GsBKGsZ8SNv0AImTjMSW7Q)
authoriap10@labyrinth.cl.cam.ac.uk <iap10@labyrinth.cl.cam.ac.uk>
Wed, 22 Sep 2004 17:45:38 +0000 (17:45 +0000)
committeriap10@labyrinth.cl.cam.ac.uk <iap10@labyrinth.cl.cam.ac.uk>
Wed, 22 Sep 2004 17:45:38 +0000 (17:45 +0000)
Return ENOSYS for vm86old syscall to prevent XFree86 VESA mode driver crashing.
Fix /dev/mem to allocate pagetables from user slab cache. This fixes X for the
ATI driver, and probably others.

linux-2.6.8.1-xen-sparse/arch/xen/i386/kernel/entry.S
linux-2.6.8.1-xen-sparse/arch/xen/i386/mm/ioremap.c

index 4f137e8cea35edf8a8ea8db2bd55f59ed5757ea7..f1e60cc06c5c4098cff5ef17abe08e3cacdaba04 100644 (file)
@@ -854,7 +854,7 @@ ENTRY(sys_call_table)
        .long sys_iopl          /* 110 */
        .long sys_vhangup
        .long sys_ni_syscall    /* old "idle" system call */
-       .long sys_vm86old
+       .long sys_ni_syscall    /* disable sys_vm86old */
        .long sys_wait4
        .long sys_swapoff       /* 115 */
        .long sys_sysinfo
index 8a12a5c93c25df3649639ab5d2fbe847c3c55529..ddf2ebba8a5ee83ebc58230981e27ed3afca4392 100644 (file)
@@ -381,11 +381,11 @@ static inline int direct_remap_area_pmd(struct mm_struct *mm,
     if (address >= end)
         BUG();
     do {
-        pte_t *pte = pte_alloc_kernel(mm, pmd, address);
+        pte_t *pte = pte_alloc_map(mm, pmd, address);
         if (!pte)
             return -ENOMEM;
         direct_remap_area_pte(pte, address, end - address, v);
-
+       pte_unmap(pte);
         address = (address + PMD_SIZE) & PMD_MASK;
         pmd++;
     } while (address && (address < end));